Фоновая задача

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Фо́новая зада́ча (фоновый процесс) — процесс, который работает в фоне, на заднем плане. Имеется в виду, что оболочка операционной системы, которая выполняет фоновый процесс, не ждёт завершения или окончания процесса, как это происходит с обычными программами. Оболочка может запустить ещё много процессов сразу после запуска одного фонового так, что они будут выполняться одновременно. На самом деле процессы будут выполняться поочерёдно — то один, то другой, но скорость переключения между процессами слишком быстра для человеческого восприятия, поэтому нам кажется, что они выполняются одновременно. Типичными фоновыми процессами, выполняющимися в системе, являются обработчики событий и системные службы. В рамках выделенной оперативной памяти может выполняться любое желаемое количество процессов.

Как правило (например, в UNIX), деление процессов на фоновые и процессы переднего плана отражает только отношение процесса к оболочке ОС и к драйверу терминала, а не особенности его исполнения внутри операционной среды и диспетчера.

Так, например, фоновый процесс, как правило, не имеет права принимать ввод пользователя, при попытке сделать это он останавливается, и оболочка ОС выводит об этом сообщение пользователю.

Оболочка ОС UNIX подразделяет запущенные ей группы процессов на «переднего плана», «фоновые» и «приостановленные», и поддерживает перевод групп процессов из одного из выше названных классов в другой. Для этого используется & (амперсенд) в конце командной строки, клавиатурная комбинация Ctrl-Z (приостанавливает текущую группу процессов переднего плана), и команды jobs, fg и bg.

Отличие фоновых процессов от «демонов» (служб) ОС UNIX в том, что «демон» полностью утрачивает ассоциацию с пользовательским терминалом и оболочкой ОС, зачастую продолжая существовать и после выхода породившего его процесса оболочки. Фоновый же процесс по-прежнему сохраняет логическую ассоциацию с терминалом и оболочкой.

Особенности

[править | править код]

Unix-системы

[править | править код]

В Unix-системах процесс можно сделать фоновым, запустив его с амперсандом:

$ command &